 /*
 * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
 * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
 */
package com.yxw.live_vod_boot.controller;


import com.yxw.yxnet_cd_center.common.utils.BaseResult;
import com.yxw.live_vod_boot.utils.PageUtils;
import com.yxw.live_vod_boot.service.IYxLiveAppealService;
import com.yxw.live_vod_boot.service.LiveProcessService;
import com.yxw.live_vod_boot.service.LiveRecommendService;
import com.yxw.live_vod_boot.service.IYxLiveShopPunishService;
import com.yxw.live_vod_boot.entity.YxLiveActivityProductsEntity;
import com.yxw.live_vod_boot.entity.YxLivePushLogEntity;
import com.yxw.live_vod_boot.entity.YxLiveShopApplyEntity;
import com.yxw.live_vod_boot.entity.YxLiveShopUserEntity;
import com.yxw.live_vod_boot.entity.YxLiveAddressEntity;
import com.yxw.live_vod_boot.entity.YxLiveAppealEntity;
import com.yxw.live_vod_boot.dto.YxLiveActivityProductsAddDTO;
import com.yxw.live_vod_boot.dto.YxLiveActivityProductsEditLivePriceDTO;
import com.yxw.live_vod_boot.dto.YxLiveActivityProductsEditOrderDTO;
import com.yxw.live_vod_boot.dto.YxLiveActivityProductsEditShowDurationDTO;
import com.yxw.live_vod_facade.dto.YxLiveActivityProductsQueryDTO;
import com.yxw.live_vod_boot.dto.YxLiveAppealAddDTO;
import com.yxw.live_vod_boot.dto.YxLiveAppealQueryDTO;
import com.yxw.live_vod_boot.dto.ShopQueryPunishDTO;
import com.yxw.live_vod_boot.vo.LiveEndShowInforVO;
import com.yxw.live_vod_facade.dto.ShopManagerAddVirtualVisitorDTO;
import com.yxw.live_vod_facade.dto.LiveShopDeleteUserDTO;
import com.yxw.live_vod_facade.dto.LiveShopAddUserDTO;
import com.yxw.live_vod_facade.dto.UserGetPlayURLDTO;
import com.yxw.live_vod_facade.dto.ClientSendStartPushApplyDTO;
import com.yxw.live_vod_facade.dto.LiveShopAddApplyDTO;
import com.yxw.live_vod_facade.dto.LiveShopEditUserDTO;
import com.yxw.live_vod_facade.dto.ShopUserEditLiveApplyDTO;
import com.yxw.live_vod_facade.dto.ShopUserEditLiveHomeNameDTO;
import com.yxw.live_vod_facade.dto.ShopUserEditLiveHomeWelcomeWordsDTO;
import com.yxw.live_vod_facade.dto.ShopUserEditLiveHomeEndWordsDTO;
import com.yxw.live_vod_facade.dto.ShopSendLiveQueryDTO;
import com.yxw.live_vod_facade.dto.YxLivePushLogDTO;
import com.yxw.live_vod_facade.dto.YxLiveShopPunishQueryDTO;
import com.yxw.live_vod_facade.dto.QueryStringIdDTO;
import com.yxw.live_vod_boot.dto.ShopManagerEndLiveDTO;
import com.yxw.live_vod_boot.entity.YxLiveShopPunishEntity;
import com.yxw.live_vod_facade.vo.ShopSendLiveApplyVO;
import com.yxw.live_vod_facade.vo.LivePushServerInforVO;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.validation.annotation.Validated;
import org.springframework.beans.factory.annotation.Autowired;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.NotBlank;
import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;
import lombok.extern.slf4j.Slf4j;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
/*
import org.springframework.web.bind.annotation.RequestParam;
import javax.validation.constraints.NotNull;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletRequest;
import java.io.UnsupportedEncodingException;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
*/


/**
 * 直播处理逻辑服务
 * @author hjx
 * @date 2023-11-17
 * @update 2023-11-20
 */
@Slf4j
@Api(value = "直播店铺用户相关的操作管理", tags = {"直播店铺用户相关的操作管理"})
@RestController
@RequestMapping("/api/live/shop")
public class LiveShopUserProcessController {
    
    @Autowired
    private LiveProcessService liveProcessService;
    @Autowired
    private IYxLiveAppealService oYxLiveAppealService;
    @Autowired
    private LiveRecommendService oLiveRecommendService;

    @Autowired
    private IYxLiveShopPunishService oIYxLiveShopPunishService;
    /*** 
    * 增加店铺开通直播
    * @param oYxLiveShopApplyDTO
    * @return BaseResult
    **/
    @ApiOperation(value ="权限_店铺开通直播申请", notes = "此接口用于店铺开通直播申请")
    @ApiResponses({@ApiResponse(code = 200,message = "OK",response = YxLiveShopApplyEntity.class),})
    @PostMapping("/liveShopSendApply")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "multipart/form-data", name = "defaultHomePicture", value = "缺省的直播间背景图片" , required = true , dataType = "__file")
    })//required = true ,
    public BaseResult liveShopSendApply(HttpServletRequest httpRequest,MultipartFile defaultHomePicture,LiveShopAddApplyDTO oLiveShopAddApplyDTO)
    {
        //HttpServletRequest httpRequest,
        return liveProcessService.shopSendApply(httpRequest,defaultHomePicture,oLiveShopAddApplyDTO);
    } 
    /*** 
    * 根据店铺Id查询是否开通直播申请
    * @param oYxLiveShopApplyDTO
    * @return BaseResult
    **/
    @ApiOperation(value ="权限_根据店铺Id查询是否开通直播申请", notes = "此接口用于根据店铺Id查询是否开通直播申请")
    @ApiResponses({@ApiResponse(code = 200,message = "OK",response = YxLiveShopApplyEntity.class),})
    @GetMapping("/shopQuryApplyByLiveShopId/{liveShopId}")
    public BaseResult shopQuryApplyByLiveShopId(@PathVariable @NotNull(message = "店铺内建id不能为空") Long liveShopId)
    {
        //HttpServletRequest httpRequest,
        return liveProcessService.shopQuryApplyByLiveShopId(liveShopId);
    } 
   
    /*** 
    * 开通直播店铺增加用户
    * @param oShopAddUserDTO
    * @return BaseResult
    **/
    @ApiOperation(value ="店铺员工_开通直播店铺增加用户", notes = "此接口用于开通直播店铺增加用户")
    @ApiResponses({@ApiResponse(code = 200,message = "OK",response = YxLiveShopUserEntity.class),})
    @PostMapping("/liveShopAddShopUser")
    public BaseResult liveShopAddShopUser(HttpServletRequest httpRequest,@RequestBody @Valid LiveShopAddUserDTO oShopAddUserDTO)
    {
        return liveProcessService.addShopUser(httpRequest,oShopAddUserDTO);
    }
    /*** 
    * 开通直播店铺修改用户类别
    * @param oShopAddUserDTO
    * @return BaseResult
    **/
    @ApiOperation(value ="店铺员工_开通直播店铺修改用户类别", notes = "此接口用于开通直播店铺修改用户类别")
    @ApiResponses({@ApiResponse(code = 200,message = "OK",response = YxLiveShopUserEntity.class),})
    @PostMapping("/liveShopEditShopUser")
    public BaseResult liveShopEditShopUser(HttpServletRequest httpRequest,@RequestBody @Valid LiveShopEditUserDTO oLiveShopEditUserDTO)
    {
        return liveProcessService.editShopUser(httpRequest,oLiveShopEditUserDTO);
    }
    /***
    * 开通直播店铺删除用户
    * @param oShopAddUserDTO
    * @return BaseResult
    **/
    @ApiOperation(value ="店铺员工_开通直播店铺删除用户", notes = "此接口用于开通直播店铺删除用户")
    @ApiResponses({@ApiResponse(code = 200,message = "OK",response = YxLiveShopUserEntity.class),})
    @PostMapping("/liveShopRemoveShopUser")
    public BaseResult liveShopRemoveShopUser(HttpServletRequest httpRequest,@RequestBody @Valid LiveShopDeleteUserDTO oShopDeleteUserDTO)
    {
        return liveProcessService.deleteShopUser(httpRequest,oShopDeleteUserDTO);
    }
    /*** 
    * 根据店铺Id查询店铺的员工
    * @param liveShopId
    * @return List<YxLiveShopUserEntity>
    **/
    @ApiOperation(value ="店铺员工_根据店铺Id查询店铺的员工",notes = "此接口用于根据店铺Id查询店铺的员工")
    @ApiResponses({@ApiResponse(code = 200,message = "OK",response = YxLiveShopUserEntity.class),})
    @GetMapping("/liveShopSelectUserList/{liveShopId}")
    public BaseResult liveShopSelectUserList(@PathVariable @NotNull(message = "店铺内建id不能为空") Long liveShopId)
    {
        return BaseResult.success(liveProcessService.selectYxLiveShopUserList(liveShopId));
    }    
    /*** 
    * 根据店铺Id查询店铺在线员工
    * @param liveShopId
    * @return List<YxLiveShopUserEntity>
    **/
    @ApiOperation(value ="店铺员工_根据店铺Id查询店铺在线员工",notes = "此接口用于根据店铺Id查询店铺在线员工")
    @ApiResponses({@ApiResponse(code = 200,message = "OK",response = YxLiveShopUserEntity.class),})
    @GetMapping("/getLiveShopOnlineUsers/{liveShopId}/{liveId}")
    public BaseResult getLiveShopOnlineUsers(@PathVariable @NotNull(message = "店铺内建id不能为空") Long liveShopId,@PathVariable @NotNull(message = "liveId不能为空") String liveId)
    {
        return BaseResult.success(liveProcessService.getLiveShopOnlineUsers(liveShopId,liveId));
    }
    /**
     * 店铺发送开播申请
     * @param liveShopId
     * @return BaseResult
     */ 
    @ApiOperation(value ="直播申请_店铺发送开播申请", notes = "此接口用于店铺发送开播申请")
    @ApiResponses({@ApiResponse(code = 200,message = "OK",response = LivePushServerInforVO.class),})
    @PostMapping("/shopSendLiveApply/{liveShopId}")    
    public BaseResult shopSendLiveApply(HttpServletRequest httpRequest,@PathVariable @NotNull(message = "店铺内建id不能为空") Long liveShopId)
    {
        return liveProcessService.shopSendLiveApply(httpRequest, liveShopId);
    }
    /**
     * 店铺查询被处罚记录
     * @param liveShopId
     * @return BaseResult
     */ 
    @ApiOperation(value ="处罚_店铺查询被处罚记录", notes = "此接口用于店铺查询被处罚记录")
    @ApiResponses({@ApiResponse(code = 200,message = "OK",response = YxLiveShopPunishEntity.class),})
    @PostMapping("/shopQueryPunish")    
    public BaseResult shopQueryPunish(HttpServletRequest httpRequest,@RequestBody @Valid ShopQueryPunishDTO oShopQueryPunishDTO)
    {
        YxLiveShopPunishQueryDTO oYxLiveShopPunishQueryDTO = new YxLiveShopPunishQueryDTO();
        oYxLiveShopPunishQueryDTO.setLiveShopId(oShopQueryPunishDTO.getLiveShopId());
        oYxLiveShopPunishQueryDTO.setCurrPage(oShopQueryPunishDTO.getCurrPage());
        oYxLiveShopPunishQueryDTO.setPageSize(oShopQueryPunishDTO.getPageSize());
        return BaseResult.success(oIYxLiveShopPunishService.selectYxLiveShopPunishPage(oYxLiveShopPunishQueryDTO));
    }    
    /*** 
    * 修改直播间封面
    * @param oYxLiveShopApplyDTO
    * @return BaseResult
    **/
    @ApiOperation(value ="直播间_修改直播间封面",notes = "修改直播间封面")
    @ApiResponses({@ApiResponse(code = 200,message = "OK",response = BaseResult.class),})
    @PostMapping("/shopUserEditLiveApplyPicture/{liveApplyId}")
     @ApiImplicitParams({
            @ApiImplicitParam(paramType = "multipart/form-data", name = "defaultHomePicture", value = "缺省的直播间背景图片", required = true, dataType = "__file")
    })
    public BaseResult shopUserEditLiveApplyPicture(HttpServletRequest httpRequest,@PathVariable @NotBlank(message = "直播申请id不能为空") String liveApplyId,MultipartFile defaultHomePicture)
    {
        return liveProcessService.shopUserEditLiveApplyPicture(httpRequest,defaultHomePicture,liveApplyId);
    }  
    /*** 
    * 修改直播名称
    * @param oYxLiveShopApplyDTO
    * @return BaseResult
    **/
    @ApiOperation(value ="直播间_修改直播名称",notes = "此接口用于修改直播名称")
    @ApiResponses({@ApiResponse(code = 200,message = "OK",response = BaseResult.class),})
    @PostMapping("/shopUserEditLiveHomeName")
    public BaseResult shopUserEditLiveHomeName(HttpServletRequest httpRequest,@RequestBody @Valid ShopUserEditLiveHomeNameDTO oShopUserEditLiveHomeNameDTO)
    {
        ShopUserEditLiveApplyDTO oShopUserEditLiveApplyDTO = new ShopUserEditLiveApplyDTO();
        oShopUserEditLiveApplyDTO.setLiveApplyId(oShopUserEditLiveHomeNameDTO.getLiveApplyId());
        oShopUserEditLiveApplyDTO.setLiveHomeName(oShopUserEditLiveHomeNameDTO.getLiveHomeName());
        return liveProcessService.shopUserEditShopApply(httpRequest,oShopUserEditLiveApplyDTO);
    } 
    /*** 
    * 修改直播间欢迎词
    * @param oYxLiveShopApplyDTO
    * @return BaseResult
    **/
    @ApiOperation(value ="直播间_修改直播间欢迎词",notes = "此接口用于修改直播间欢迎词")
    @ApiResponses({@ApiResponse(code = 200,message = "OK",response = BaseResult.class),})
    @PostMapping("/shopUserEditLiveHomeWelcomeWords")
    public BaseResult shopUserEditLiveHomeWelcomeWords(HttpServletRequest httpRequest,@RequestBody @Valid ShopUserEditLiveHomeWelcomeWordsDTO oShopUserEditLiveHomeWelcomeWordsDTO)
    {
        ShopUserEditLiveApplyDTO oShopUserEditLiveApplyDTO = new ShopUserEditLiveApplyDTO();
        oShopUserEditLiveApplyDTO.setLiveApplyId(oShopUserEditLiveHomeWelcomeWordsDTO.getLiveApplyId());
        oShopUserEditLiveApplyDTO.setLiveWelcomeWords(oShopUserEditLiveHomeWelcomeWordsDTO.getLiveWelcomeWords());
        return liveProcessService.shopUserEditShopApply(httpRequest,oShopUserEditLiveApplyDTO);
    } 
    /*** 
    * 修改直播间结束语
    * @param oYxLiveShopApplyDTO
    * @return BaseResult
    **/
    @ApiOperation(value ="直播间_修改直播间结束语",notes = "此接口用于修改直播间结束语")
    @ApiResponses({@ApiResponse(code = 200,message = "OK",response = BaseResult.class),})
    @PostMapping("/shopUserEditLiveHomeEndWords")
    public BaseResult shopUserEditLiveHomeEndWords(HttpServletRequest httpRequest,@RequestBody @Valid ShopUserEditLiveHomeEndWordsDTO oShopUserEditLiveHomeEndWordsDTO)
    {
        ShopUserEditLiveApplyDTO oShopUserEditLiveApplyDTO = new ShopUserEditLiveApplyDTO();
        oShopUserEditLiveApplyDTO.setLiveApplyId(oShopUserEditLiveHomeEndWordsDTO.getLiveApplyId());
        oShopUserEditLiveApplyDTO.setLiveEndWords(oShopUserEditLiveHomeEndWordsDTO.getLiveEndWords());
        return liveProcessService.shopUserEditShopApply(httpRequest,oShopUserEditLiveApplyDTO);
    } 
   
    /**
     * 店铺客户端发送开始推流申请
     * @param 
     * @return BaseResult
     */  
    @ApiOperation(value ="推流_店铺客户端发送开始推流申请", notes = "此接口用于店铺客户端发送开始推流申请")
    @ApiResponses({@ApiResponse(code = 200,message = "OK",response = ShopSendLiveApplyVO.class),})
    @PostMapping("/clientSendStartPushApply")     
    public BaseResult clientSendStartPushApply(HttpServletRequest httpRequest,@RequestBody @Valid ClientSendStartPushApplyDTO oClientSendStartPushApplyDTO)
    {
        return liveProcessService.clientSendStartPushApply(httpRequest, oClientSendStartPushApplyDTO);
    }
    /*** 
    * 增加推流日志
    * @param oYxLivePushLogDTO
    * @return BaseResult
    **/
    @ApiOperation(value ="推流_新增推流日志(YxLivePushLog)", notes = "此接口用于新增推流日志")
    @ApiResponses({@ApiResponse(code = 200,message = "OK",response = YxLivePushLogEntity.class),})
    @PostMapping("/clientSendPushLog")
    public BaseResult clientSendPushLog(HttpServletRequest httpRequest,@RequestBody @Valid YxLivePushLogDTO oYxLivePushLogDTO)
    {
        return liveProcessService.clientSendPushLog(httpRequest, oYxLivePushLogDTO);
    }  
    /**
     * 店铺客户端发送结束推流申请
     * @param 
     * @return BaseResult
     */
    @ApiOperation(value = "推流_店铺客户端发送结束推流申请")
    @ApiResponses({@ApiResponse(code = 200,message = "OK",response = LiveEndShowInforVO.class),})
    @GetMapping(value = "/clientSendEndPushApply")    
    public BaseResult clientSendEndPushApply(HttpServletRequest httpRequest,@RequestParam String liveId)
    {
         return liveProcessService.clientSendEndPushApply(httpRequest,liveId);
    }
    /*
    @ApiOperation(value = "app用户进入店铺的直播间获取直播播放链接")
    @PostMapping(value = "/userGetPlayURL")
    public BaseResult userGetPlayURL(HttpServletRequest httpRequest,@RequestBody @Validated UserGetPlayURLDTO userGetPlayURLDTO)
    {
        return liveProcessService.userGetPlayURL(httpRequest,userGetPlayURLDTO);
    }
    */
     /**
     * 店铺查询直播
     * @param oShopSendLiveQueryDTO
     * @return BaseResult
     */ 
    @ApiOperation(value = "店铺查询直播")
    @ApiResponses({@ApiResponse(code = 200,message = "OK",response = YxLiveAddressEntity.class),})
    @PostMapping(value = "/shopSendLiveQuery")    
    public BaseResult shopSendLiveQuery(HttpServletRequest httpRequest,@RequestBody @Validated ShopSendLiveQueryDTO oShopSendLiveQueryDTO)
    {
        return liveProcessService.shopSendLiveQuery(httpRequest, oShopSendLiveQueryDTO);
    }
    /*** 
    * 获取正在生效的主播协议
    * @return List<YxLiveAgreementEntity>
    **/
    @ApiOperation(value ="主播协议_获取正在生效的主播协议",notes ="此接口用于获取正在生效的主播协议")
    @GetMapping("selectActiveAgreement")    
    public BaseResult selectActiveAgreement()
    {
        return liveProcessService.selectActiveAgreement();
    }
    /*** 
    * 增加店铺的商品 
    * @param oYxLiveActivityProductsDTO
    * @return BaseResult
    **/
    @ApiOperation(value ="商品_新增店铺的商品", notes = "此接口用于新增店铺的商品 ")
    @ApiResponses({@ApiResponse(code = 200,message = "OK",response = YxLiveActivityProductsEntity.class),})
    @PostMapping("/liveActivityProductsAdd")
    public BaseResult liveActivityProductsInsert(HttpServletRequest httpRequest,@RequestBody @Validated YxLiveActivityProductsAddDTO oYxLiveActivityProductsAddDTOList)
    {
        return liveProcessService.liveActivityProductsInsert(httpRequest,oYxLiveActivityProductsAddDTOList);
    }
    /*** 
    * 修改店铺商品的弹窗时长
    * @param oYxLiveActivityProductsDTO
    * @return BaseResult
    **/
    @ApiOperation(value ="商品_修改店铺商品的弹窗时长",notes = "此接口用于修改店铺商品的弹窗时长")
    @ApiResponses({@ApiResponse(code = 200,message = "OK",response = BaseResult.class),})
    @PostMapping("/liveActivityProductsEditShowDuration")
    public BaseResult liveActivityProductsEditShowDuration(@RequestBody @Validated YxLiveActivityProductsEditShowDurationDTO oYxLiveActivityProductsEditShowDurationDTO)
    {
        return liveProcessService.liveActivityProductsEditShowDuration(oYxLiveActivityProductsEditShowDurationDTO);
    }
    /*** 
    * 修改店铺商品的直播价格
    * @param oYxLiveActivityProductsDTO
    * @return BaseResult
    **/
    @ApiOperation(value ="商品_修改店铺商品的直播价格",notes = "此接口用于修改店铺的商品信息")
    @ApiResponses({@ApiResponse(code = 200,message = "OK",response = BaseResult.class),})
    @PostMapping("/liveActivityProductsEditLivePrice")
    public BaseResult liveActivityProductsEditLivePrice(HttpServletRequest httpRequest,@RequestBody @Validated YxLiveActivityProductsEditLivePriceDTO oYxLiveActivityProductsEditLivePriceDTO)
    {
        return liveProcessService.liveActivityProductsEditLivePrice(httpRequest,oYxLiveActivityProductsEditLivePriceDTO);
    }
    /*** 
    * 修改店铺商品的排序序号
    * @param oYxLiveActivityProductsDTO
    * @return BaseResult
    **/
    @ApiOperation(value ="商品_修改店铺商品的排序序号",notes = "此接口用于修改店铺商品的排序序号")
    @ApiResponses({@ApiResponse(code = 200,message = "OK",response = BaseResult.class),})
    @PostMapping("/liveActivityProductsEditOrder")
    public BaseResult liveActivityProductsEditOrder(@RequestBody @Validated YxLiveActivityProductsEditOrderDTO oYxLiveActivityProductsEditOrderDTO)
    {
        return liveProcessService.liveActivityProductsEditOrder(oYxLiveActivityProductsEditOrderDTO);
    }
    /*** 
    * 删除店铺的商品 
    * @param id
    * @param oYxLiveActivityProductsDTO
    * @return BaseResult
    **/
    @ApiOperation(value ="商品_删除店铺的商品",notes = "此接口用于删除店铺的商品 信息")
    @ApiResponses({@ApiResponse(code = 200,message = "OK",response = BaseResult.class),})
    @GetMapping("/liveActivityProductsDelete/{id}")
    public BaseResult liveActivityProductsDelete(HttpServletRequest httpRequest,@PathVariable @NotNull(message = "id不能为空") Long id)
    {
        return liveProcessService.liveActivityProductsDeleteById(httpRequest,id);
    } 
    /*** 
    * 按列表删除店铺的商品 
    * @param id
    * @param oYxLiveActivityProductsDTO
    * @return BaseResult
    **/
    @ApiOperation(value ="商品_按列表删除店铺的商品",notes = "此接口用于按列表删除店铺的商品")
    @ApiResponses({@ApiResponse(code = 200,message = "OK",response = BaseResult.class),})
    @PostMapping("/liveProductsDeleteList")
    public BaseResult liveProductsDeleteList(HttpServletRequest httpRequest,@RequestBody @Validated YxLiveActivityProductsAddDTO oYxLiveActivityProductsAddDTOList)
    {
        return liveProcessService.liveProductsDeleteList(httpRequest,oYxLiveActivityProductsAddDTOList);
    }     
    /*** 
    * 根据id查找店铺的商品 
    * @param id
    * @param oYxLiveActivityProductsDTO
    * @return YxLiveActivityProductsEntity
    **/
    @ApiOperation(value ="商品_根据id查找店铺的商品",notes = "此接口用于根据id查找店铺的商品 信息")
    @ApiResponses({@ApiResponse(code = 200,message = "OK",response = YxLiveActivityProductsEntity.class),})
    @GetMapping("/liveActivityProductSelectDetail/{id}")
    public BaseResult liveActivityProductsSelectById(@PathVariable @NotNull(message = "id不能为空")Long id)
    {
        return BaseResult.success(liveProcessService.liveActivityProductsSelectById(id));
    }
    /*** 
    * 自定义分页查询店铺的商品 
    * @param currentPage 当前页
    * @param pageSize 分页大小
    * @param oYxLiveActivityProductsDTO
    * @return Page
    **/
    @ApiOperation(value ="商品_自定义分页查询店铺的商品",notes = "此接口用于自定义分页查询店铺的商品 信息")
    @ApiResponses({@ApiResponse(code = 200,message = "OK",response = YxLiveActivityProductsEntity.class),})
    @PostMapping("/liveActivityProductsSelectPage")
    public BaseResult liveActivityProductsSelectPage(@RequestBody @Valid YxLiveActivityProductsQueryDTO oYxLiveActivityProductsQueryDTO)
    {
        return BaseResult.success(PageUtils.get(liveProcessService.liveActivityProductsSelectPage(oYxLiveActivityProductsQueryDTO.getCurrentPage(),oYxLiveActivityProductsQueryDTO.getPageSize(),oYxLiveActivityProductsQueryDTO)));
    }
    /*** 
    * 自定义不分页查询店铺的商品 
    * @param oYxLiveActivityProductsDTO
    * @return List<YxLiveActivityProductsEntity>
    **/
    @ApiOperation(value ="商品_自定义不分页查询店铺的商品",notes = "此接口用于自定义不分页查询店铺的商品 信息")
    @ApiResponses({@ApiResponse(code = 200,message = "OK",response = YxLiveActivityProductsEntity.class),})
    @PostMapping("/liveActivityProductsSelectList")
    public BaseResult liveActivityProductsSelectList(@RequestBody @Valid YxLiveActivityProductsQueryDTO oYxLiveActivityProductsQueryDTO)
    {
        return BaseResult.success(liveProcessService.liveActivityProductsSelectList(oYxLiveActivityProductsQueryDTO));
    }
    
    /*** 
    * 自定义统计店铺的商品 
    * @param oYxLiveActivityProductsDTO
    * @return int
    **/
    @ApiOperation(value ="商品_自定义统计店铺的商品 ",notes ="此接口用于自定义统计店铺的商品 记录条数")
    @PostMapping("/liveActivityProductsSelectCount")
    public BaseResult liveActivityProductsSelectCount(@RequestBody @Valid YxLiveActivityProductsQueryDTO oYxLiveActivityProductsQueryDTO)
    {
        return BaseResult.success(liveProcessService.liveActivityProductsSelectCount(oYxLiveActivityProductsQueryDTO));
    }
    /*** 
    * 播主商品讲解
    * @param liveId 直播流Id
    * @param productid  产品id
    * @return BaseResult
    **/
    @ApiOperation(value ="商品_播主商品讲解 ",notes ="此接口用于播主商品讲解")
    @GetMapping("/liveActivityProductExplanation/{productId}/{liveId}")
    public BaseResult liveActivityProductExplanation(HttpServletRequest httpRequest,@PathVariable @NotNull(message = "productid不能为空") Long productId,@PathVariable @NotBlank(message = "liveId不能为空") String liveId)
    {
        return BaseResult.success(liveProcessService.liveActivityProductExplanation(httpRequest,liveId,productId));
    }
    /*** 
    * 播主取消商品讲解
    * @param liveId 直播流Id
    * @param productid  产品id
    * @return BaseResult
    **/
    @ApiOperation(value ="商品_播主取消商品讲解 ",notes ="此接口用于播主取消商品讲解")
    @GetMapping("/liveActivityProductCancelExplanation/{productId}/{liveId}")
    public BaseResult liveActivityProductCancelExplanation(HttpServletRequest httpRequest,@PathVariable @NotNull(message = "productid不能为空") Long productId,@PathVariable @NotBlank(message = "liveId不能为空") String liveId)
    {
        return BaseResult.success(liveProcessService.liveActivityProductCancelExplanation(httpRequest,liveId,productId));
    } 
    /*** 
    * 店铺发送处罚申诉 
    * @param oYxLiveAppealDTO
    * @return BaseResult
    **/
    @ApiOperation(value ="申诉_新增店铺申诉 (YxLiveAppeal)", notes = "此接口用于新增店铺申诉 ")
    @ApiResponses({@ApiResponse(code = 200,message = "OK",response = YxLiveAppealEntity.class),})
    @ApiImplicitParams({@ApiImplicitParam(paramType = "multipart/form-data",name = "appealPicture", value = "申诉图片", dataType = "__file")})//, required = true
    @PostMapping("/addYxLiveAppeal")
    public BaseResult addYxLiveAppeal(MultipartFile appealPicture,YxLiveAppealAddDTO oYxLiveAppealAddDTO)
    {
        return oYxLiveAppealService.insertYxLiveAppeal(appealPicture,oYxLiveAppealAddDTO);
    }

    /*** 
    * 删除店铺申诉 
    * @param id
    * @param oYxLiveAppealDTO
    * @return BaseResult
    **/
    @ApiOperation(value ="申诉_删除店铺申诉 YxLiveAppeal",notes = "此接口用于删除店铺申诉 信息")
    @ApiResponses({@ApiResponse(code = 200,message = "OK",response = BaseResult.class),})
    @GetMapping("/removeYxLiveAppeal/{id}")
    public BaseResult removeYxLiveAppeal(@PathVariable @NotNull(message = "id不能为空")Long id)
    {
            return oYxLiveAppealService.deleteYxLiveAppealById(id);
    }
    /*** 
    * 根据id查找店铺申诉 
    * @param id
    * @param oYxLiveAppealDTO
    * @return YxLiveAppealEntity
    **/
    @ApiOperation(value ="申诉_根据id查找店铺申诉 ",notes = "此接口用于根据id查找店铺申诉 信息")
    @ApiResponses({@ApiResponse(code = 200,message = "OK",response = YxLiveAppealEntity.class),})
    @GetMapping("/getYxLiveAppealInfo/{id}")
    public BaseResult getYxLiveAppealInfo(@PathVariable @NotNull(message = "id不能为空")Long id)
    {
        return BaseResult.success(oYxLiveAppealService.selectYxLiveAppealById(id));
    }
    /*** 
    * 自定义分页查询店铺申诉 
    * @param currentPage 当前页
    * @param pageSize 分页大小
    * @param oYxLiveAppealDTO
    * @return Page
    **/
    @ApiOperation(value ="申诉_自定义分页查询店铺申诉 ",notes = "此接口用于自定义分页查询店铺申诉 信息")
    @ApiResponses({@ApiResponse(code = 200,message = "OK",response = YxLiveAppealEntity.class),})
    @PostMapping("/selectYxLiveAppealPage/{currentPage}/{pageSize}")
    public BaseResult selectYxLiveAppealPage(@PathVariable int currentPage,@PathVariable int pageSize,@RequestBody YxLiveAppealQueryDTO oYxLiveAppealQueryDTO)
    {
        return BaseResult.success(PageUtils.get(oYxLiveAppealService.selectYxLiveAppealPage(currentPage,pageSize,oYxLiveAppealQueryDTO)));
    }
    /*** 
    * 自定义不分页查询店铺申诉 
    * @param oYxLiveAppealDTO
    * @return List<YxLiveAppealEntity>
    **/
    @ApiOperation(value ="申诉_自定义不分页查询店铺申诉 ",notes = "此接口用于自定义不分页查询店铺申诉 信息")
    @ApiResponses({@ApiResponse(code = 200,message = "OK",response = YxLiveAppealEntity.class),})
    @PostMapping("/selectYxLiveAppealList")
    public BaseResult selectYxLiveAppealList(@RequestBody  @Validated YxLiveAppealQueryDTO oYxLiveAppealQueryDTO)
    {
        return BaseResult.success(oYxLiveAppealService.selectYxLiveAppealList(oYxLiveAppealQueryDTO));
    }
    /*** 
    * 自定义统计店铺申诉 
    * @param oYxLiveAppealDTO
    * @return int
    **/
    @ApiOperation(value ="申诉_自定义统计店铺申诉 ",notes ="此接口用于自定义统计店铺申诉 记录条数")
    @PostMapping("/selectYxLiveAppealCount")
    public BaseResult selectYxLiveAppealCount(@RequestBody  @Validated YxLiveAppealQueryDTO oYxLiveAppealQueryDTO)
    {
        return BaseResult.success(oYxLiveAppealService.selectYxLiveAppealCount(oYxLiveAppealQueryDTO));
    }
    /*** 
    * 管理员结束直播
    * @param QueryStringIdDTO
    * @return int
    **/
    @ApiOperation(value ="直播_管理员结束直播",notes ="此接口用于管理员结束直播")
    @PostMapping("/shopManagerEndLive")
    public BaseResult shopManagerEndLive(HttpServletRequest httpRequest,@RequestBody  @Validated ShopManagerEndLiveDTO oShopManagerEndLiveDTO)
    {
        return liveProcessService.shopManagerEndLive(httpRequest,oShopManagerEndLiveDTO);
    }
    /*** 
    * 管理员添加虚拟人数
    * @param QueryStringIdDTO
    * @return int
    **/
    @ApiOperation(value ="直播_管理员添加虚拟浏览人数",notes ="此接口用于管理员添加虚拟浏览人数")
    @PostMapping("/shopManagerAddVirtualVisitor")
    public BaseResult shopManagerAddVirtualVisitor(HttpServletRequest httpRequest,@RequestBody  @Validated ShopManagerAddVirtualVisitorDTO oShopManagerAddVirtualVisitorDTO)
    {
        return liveProcessService.shopManagerAddVirtualVisitor(httpRequest,oShopManagerAddVirtualVisitorDTO);
    }
}